Many types of microprocessors and microcontrollers exist inside computers, peripheral devices and other systems, and the code they execute is susceptible to attacks. One type of code protection is to secure the boot code; keeping attackers out of the system at boot time has a number of solutions, including secure boot mechanisms and signed code verification mechanisms.
However, after boot, keeping attackers out of the boot-loaded code that gets executed is not as straightforward, as such code needs to interact and parse data from the outside world. Further, loaded code is typically larger and far more complex than boot code, and thus often contains bugs that make a microprocessor or microcontroller susceptible to being taken over by an attack.